export  interface IElement {


    /**
     * 第一子节点的值
     */
    getfirstChildNodeValue():string
    /**
     * 获取属性名称
     * @param attributeName 属性名称
     */
    getAttribute(attributeName:string):string;
    /**
     * 获取子标签列表，如果没有返回空数组
     * @param tagName 子标签名称
     */
    getElementsByTagName(tagName:string):Array<IElement>


    /**
     * 获取节点的本地名称
     */
    getLocalName():string
    /**
     * 获取节点的namespaceURI
     */
    getNamespaceURI():string

    /**
     * 根据namespace,tagName获取子标签 
     * @param namespaceURI 
     * @param tagName 
     */
    getElementsByTagNameNS(namespaceURI:string,tagName:string):Array<IElement>


    /**
     * 设置element的属性名称和值
     * @param attrName 属性名称
     * @param attrValue 属性值
     */
    setAttribute(attrName:string,attrValue:string):void

    /**
     * 增加子节点
     * @param element 子节点
     * @returns  本节点
     */
    appendChild(element:IElement):IElement

    /**
     * 删除节点上的属性
     * @param attrName 属性名称
     */
    removeAttribute(attrName:string):IElement


    /**
     * 是否有子节点
     */
    hasChildNodes():boolean


    /**
     * 获取所有子节点的nodeValue的值
     */
    getAllChildNodeValue():string


    /**
     * 把element生成str
      var r = (new XMLSerializer()).serializeToString(this.getNode());
     */
    toXmlStr():string

    /**
     * 把节点的值改了,或者增加节点的值
     * @param nodeValue 节点的值
     */
    changeOrAddNodeValue(nodeValue:string):void

    //getAttributes():Array<JSJacKeyVlaue<string>>

}